#!/usr/bin/env node

/**
 * 后台管理系统启动脚本
 */

const { exec } = require('child_process');
const path = require('path');

console.log('🚀 启动工单管理系统后台...\n');

// 检查是否安装了依赖
const packageJsonPath = path.join(__dirname, 'package.json');
const nodeModulesPath = path.join(__dirname, 'node_modules');

try {
  require('fs').accessSync(nodeModulesPath);
} catch (err) {
  console.log('📦 正在安装依赖包...');
  exec('npm install', (error, stdout, stderr) => {
    if (error) {
      console.error('❌ 依赖安装失败:', error);
      return;
    }
    console.log('✅ 依赖安装完成\n');
    startServer();
  });
  return;
}

startServer();

function startServer() {
  console.log('🔧 启动后端服务...');
  console.log('📍 服务地址: http://localhost:3000');
  console.log('🎛️  管理后台: http://localhost:3000/admin');
  console.log('📚 API文档: http://localhost:3000/api');
  console.log('💊 健康检查: http://localhost:3000/health\n');
  
  console.log('💡 提示:');
  console.log('  - 使用管理员账户登录后台管理系统');
  console.log('  - 只有角色为 "admin" 的用户可以访问');
  console.log('  - 按 Ctrl+C 停止服务\n');

  // 启动服务器
  const server = exec('npm start', (error, stdout, stderr) => {
    if (error) {
      console.error('❌ 服务启动失败:', error);
      return;
    }
  });

  server.stdout.on('data', (data) => {
    console.log(data.toString());
  });

  server.stderr.on('data', (data) => {
    console.error(data.toString());
  });

  // 优雅关闭
  process.on('SIGINT', () => {
    console.log('\n🛑 正在关闭服务器...');
    server.kill('SIGINT');
    setTimeout(() => {
      console.log('✅ 服务器已关闭');
      process.exit(0);
    }, 1000);
  });
}